package com.zsrd.lessons.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zsrd.lessons.domain.TsExamPlan;
import com.zsrd.lessons.domain.TsExamQuestion;
import com.zsrd.lessons.domain.dto.ExamDto;
import com.zsrd.lessons.domain.dto.ExamPlanDto;
import com.zsrd.lessons.domain.vo.ExamPlanVo;
import com.zsrd.lessons.domain.vo.ExamQuestionsVo;
import com.zsrd.lessons.domain.vo.ExamVo;
import com.zsrd.lessons.domain.vo.TsExamQuestionVo;

/**
 * <p>
 * 考试计划表 服务类
 * </p>
 *
 * @author Chen Wei
 * @since 2022-07-11
 */
public interface TsExamPlanService extends IService<TsExamPlan> {

    /**
     * 新增考试计划
     * @param examPlanDto
     * @return
     */
    public boolean savePlan(ExamPlanDto examPlanDto);


    /**
     * 删除计划
     * @param examPlanDto
     * @return
     */
    public boolean delPlan(ExamPlanDto examPlanDto);

    /**
     * 查询考试计划
     * @param examPlanDto
     * @return
     */
    public IPage<ExamPlanVo> queryExamPlan(ExamPlanDto examPlanDto);


    /**
     * 开始考试
     * @param examPlanDto
     * @return
     */
    public ExamQuestionsVo createExam(ExamPlanDto examPlanDto);


    /**
     * 查询考试管理
     * @param examPlanDto
     * @return
     */
    public IPage<ExamVo> queryExam(ExamPlanDto examPlanDto);

    /**
     * 我的考试查询
     * @param examPlanDto
     * @return
     */
    public IPage<ExamVo> queryMyExam(ExamPlanDto examPlanDto);


    /**
     * 保存用户考试成绩
     * @param examDto
     * @return
     */
    public Boolean saveResult(ExamDto examDto);

    /**
     * 保存用户考试步骤选项
     * @param examDto
     * @return
     */
    public Boolean saveResultStep(TsExamQuestion tsExamQuestion);

    /**
     * 练习题
     * @return
     */
    TsExamQuestionVo practiceQuestion();

    /**
     * 查看考试结果
     * @param id
     * @return
     */
    ExamVo queryExamResult(int id);
}
